Expand description
This crate exposes a generalized hyper heuristics and some helper functionality which can be used to build a solver for optimization problems.
Examples
This example demonstrates the usage of example models and heuristics to minimize Rosenbrock function. For the sake of minimalism, there is a pre-built solver and heuristic operator models. Check example module to see how to use functionality of the crate for an arbitrary domain.
use rosomaxa::prelude::*;
use rosomaxa::example::*;
let random = Arc::new(DefaultRandom::default());
// examples of heuristic operator, they are domain specific. Essentially, heuristic operator
// is responsible to produce a new, potentially better solution from the given one.
let noise_op = VectorHeuristicOperatorMode::JustNoise(Noise::new_with_ratio(1., (-0.1, 0.1), random));
let delta_op = VectorHeuristicOperatorMode::JustDelta(-0.1..0.1);
let delta_power_op = VectorHeuristicOperatorMode::JustDelta(-0.5..0.5);
// add some configuration and run the solver
let (solutions, _) = Solver::default()
.with_fitness_fn(create_rosenbrock_function())
.with_init_solutions(vec![vec![2., 2.]])
.with_search_operator(noise_op, "noise", 1.)
.with_search_operator(delta_op, "delta", 0.2)
.with_diversify_operator(delta_power_op)
.with_termination(Some(5), Some(1000), None, None)
.solve()
.expect("cannot build and use solver");
// expecting at least one solution with fitness close to 0
assert_eq!(solutions.len(), 1);
let (_, fitness) = solutions.first().unwrap();
assert!(*fitness < 0.001);
Modules
- A collection of reusable algorithms without dependencies on any other module in the project.
- Contains functionality to run evolution simulation.
- This module contains example models and logic to demonstrate practical usage of rosomaxa crate.
- This module contains a hyper-heuristic logic.
- Specifies population types.
- This module reimports a common used types.
- The termination module contains logic which defines termination criteria for metaheuristic, e.g. when to stop evolution in evolutionary algorithms.
- This module contains helper functionality.
Structs
- A refinement statistics to track evolution progress.
- A default heuristic context implementation which uses telemetry to track search progression parameters.
Enums
- Defines instant refinement speed type.
Traits
- Represents heuristic context.
- Represents a heuristic objective function.
- Represents solution in population defined as actual solution.
- A trait which specifies object with state behavior.
Functions
- Gets default population algorithm.
- Gets default population selection size.
Type Aliases
- Specifies a dynamically dispatched type for heuristic population.
- Specifies a heuristic result type.